package com.health.system.service.impl;

import java.util.List;
import com.health.common.utils.DateUtils;
import com.health.common.utils.MinIOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.health.system.mapper.MallProductMapper;
import com.health.system.domain.MallProduct;
import com.health.system.service.IMallProductService;
import org.springframework.web.multipart.MultipartFile;

/**
 * 商品管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-10-29
 */
@Service
public class MallProductServiceImpl implements IMallProductService 
{
    @Autowired
    private MallProductMapper mallProductMapper;
    @Autowired
    private MinIOUtils minIOUtils;
    /**
     * 查询商品管理
     * 
     * @param productId 商品管理主键
     * @return 商品管理
     */
    @Override
    public MallProduct selectMallProductByProductId(Long productId)
    {
        return mallProductMapper.selectMallProductByProductId(productId);
    }

    /**
     * 查询商品管理列表
     * 
     * @param mallProduct 商品管理
     * @return 商品管理
     */
    @Override
    public List<MallProduct> selectMallProductList(MallProduct mallProduct)
    {
        return mallProductMapper.selectMallProductList(mallProduct);
    }

    /**
     * 新增商品管理
     * 
     * @param mallProduct 商品管理
     * @return 结果
     */
    @Override
    public int insertMallProduct(MallProduct mallProduct)
    {
        mallProduct.setCreateTime(DateUtils.getNowDate());
        return mallProductMapper.insertMallProduct(mallProduct);
    }

    /**
     * 修改商品管理
     * 
     * @param mallProduct 商品管理
     * @return 结果
     */
    @Override
    public int updateMallProduct(MallProduct mallProduct)
    {
        mallProduct.setUpdateTime(DateUtils.getNowDate());
        return mallProductMapper.updateMallProduct(mallProduct);
    }

    /**
     * 批量删除商品管理
     * 
     * @param productIds 需要删除的商品管理主键
     * @return 结果
     */
    @Override
    public int deleteMallProductByProductIds(Long[] productIds)
    {
        return mallProductMapper.deleteMallProductByProductIds(productIds);
    }

    /**
     * 删除商品管理信息
     * 
     * @param productId 商品管理主键
     * @return 结果
     */
    @Override
    public int deleteMallProductByProductId(Long productId)
    {
        return mallProductMapper.deleteMallProductByProductId(productId);
    }

    /**
     * 上传图片
     * @param file
     * @param productId
     * @return
     */
    @Override
    public String uploadImage(MultipartFile file, Long productId) {
        String url;
        try{
            //上传图片，接收图片完整url
            url = minIOUtils.uploadFile(file);
            //查出数据库中老url，若存在则删除
            MallProduct mallProduct = mallProductMapper.selectMallProductByProductId(productId);
            String mainImage = mallProduct.getMainImage();
            if(mainImage != null) minIOUtils.deleteFile(mainImage);
            //将新图片url更新进数据库
            mallProduct.setMainImage(url);
            mallProductMapper.updateMallProduct(mallProduct);
        }catch (Exception e){
            throw new RuntimeException("图片上传失败");
        }
        return url;
    }

    @Override
    public String addImg(MultipartFile file) {
        String url;
        try{
            //上传图片，接收图片完整url
            url = minIOUtils.uploadFile(file);
        }catch (Exception e){
            throw new RuntimeException("图片上传失败");
        }
        return url;
    }
}
